package Copy;

import java.io.Serializable;

public class User implements Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	/**
	 * 如果不加,每次更改 User 类都需要重新序列化,否则反序列化会报错
	 * 
	 * 其目的就是序列化对象版本控制,有关各版本反序列化时是否兼容.如果在新版本中这个值修改了,新版本就不兼容旧版本
	 * 
	 * 反序列化是会抛出 InvalidClassException 异常
	 * 
	 * 如果修改较小,比如仅仅是一个属性,我们希望向下兼容,老版本的数据都能保留,那就不用修改
	 * 
	 * 如果我们删除了一个属性,或者更改了类的继承关系,必然不能兼容旧数据,这时就应该手动更新版本
	 * 
	 */
	String name;

	/**
	 * 加上 transient 之后,该属性不能被序列化,访问该属性时,一直是默认值
	 */
	transient int age;

	public User(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}

	public void m1() {
		System.out.println("新增m1方法");
	}

	public void m2() {
		System.out.println("新增m2方法");
	}

	public void m3() {
		System.out.println("新增m3方法");
	}

	@Override
	public String toString() {
		return "User [name=" + name + ", age=" + age + "]";
	}

}
